leetcodeJS

Personal solution for leetcode problem using Javascript

View on GitHub

Problem

Given an array of integers nums.

A pair (i,j) is called good if nums[i] == nums[j] and i < j.

Return the number of good pairs.

Example 1:

Input: nums = [1,2,3,1,1,3]

Output: 4

Explanation: There are 4 good pairs (0,3), (0,4), (3,4), (2,5) 0-indexed.

Example 2:

Input: nums = [1,1,1,1]

Output: 6

Explanation: Each pair in the array are good.

Example 3:

Input: nums = [1,2,3]

Output: 0

Constraints:

1 <= nums.length <= 100 1 <= nums[i] <= 100

Pre analysis

We can use hashmap;

Another Solution

Counting in place

var numIdenticalPairs = function(nums) {
    var index = {};
    let count = 0;

    for(let i=0 ;i<nums.length; i++){
        index[nums[i]] = index[nums[i]] || [];
        index[nums[i]].push(i);
        if(index[nums[i]]!==1){
            count+=index[nums[i]].length-1
        }
    }

    return count;
};